import { mapState } from 'vuex'
import { getDistance } from '@/utils/utils'
import { companyListApi } from '@/API/reqData'
import { brand, brand_id } from '@/static/js/staticData'
import _ from 'lodash'
// 获取位置
export const location = {
  data() {
    return {}
  },
  methods: {
    // 获取服务中心和车型列表保存到vuex
    async getCompanyList() {
      const {
        data: { data },
      } = await companyListApi({
        state: 1,
        brand_id,
        company_type: 1,
      })
      // 服务中心
      let temp = data
        .map((item) => {
          if (item.company_list.length) {
            let { latitude, longitude, markers_address, after_sales_hotline, rescue_telephone, company_images } = item.company_list[0]
            let { id, company_id, company_name } = item
            return {
              id,
              latitude,
              longitude,
              text: company_name,
              value: company_name,
              companyId: company_id,
              address: markers_address,
              company_img: company_images,
              hotline: after_sales_hotline,
              rescueTelephone: rescue_telephone,
            }
          }
        })
        .filter(Boolean)
      // 设置客服中心列表
      this.setCentersList(temp)
    },
    getLocation() {
      uni.getLocation({
        type: 'wgs84',
        success: (res) => {
          console.log('纬度' + res.latitude)
          console.log('经度' + res.longitude)
          this.latLog.longitude = res.longitude
          this.latLog.latitude = res.latitude
          uni.setStorageSync('latLog', JSON.stringify(this.latLog))
          this.saveLatLog(this.latLog)
          // 获取服务中心
          this.getCompanyList()
        },
        fail: (err) => {
          this.getSetting()
        },
      })
    },
    // 1.获取设置信息-用户权限列表
    getSetting() {
      uni.getSetting({
        success: (res) => {
          console.log('用户权限列表:', res.authSetting)
          if (res.authSetting['scope.userLocation']) {
            // 来到这里说明开启了授予位置权限而手机未开启定位功能
            uni.$showMsg(
              '您的手机未开启定位功能，为了更好地服务您，请开启手机定位。',
              2500
            )
            console.log('已授权userLocation')
            // 选择位置信息
          } else {
            console.log('用户未授权userLocation')
            //2.用户第一次进来发起授权
            uni.showModal({
              title: '授予位置权限',
              content:
                '为了更好的服务您，需要您的地理位置，请开启手机定位并授予位置权限!',
              duration: 3000,
              success: (res) => {
                if (res.confirm) {
                  this.openSetting()
                } else if (res.cancel) {
                  uni.showToast({
                    title: '您未同意位置授权，无法向您提供位置信息服务！',
                    duration: 2000,
                    icon: 'none',
                  })
                }
              },
            })
          }
        },
      })
    },
    // 4.打开设置
    openSetting() {
      uni.openSetting({
        success: (res) => {
          if (res.authSetting['scope.userLocation']) {
            // 5.用户在设置中点击了允许，调用选择位置信息函数
            this.getLocation()
          } else {
            // 5.用户在设置中点击了不允许，展示拒绝授权信息
            uni.showToast({
              title: '您未同意位置授权，无法向您提供位置信息服务！',
              icon: 'none',
              duration: 3000,
            })
          }
        },
        fail: (err) => {
          console.log('打开设置失败', err)
        },
      })
    },
    // 设置客服中心列表
    setCentersList(value) {
      let deepValue = _.clone(value)
      let { longitude, latitude } = this.latLog
      deepValue.forEach((item) => {
        let distance = getDistance(
          item.longitude,
          item.latitude,
          longitude,
          latitude
        )
        console.log('value', distance)
        item.distance = distance.toFixed(1)
      })
      let tempArr = deepValue.sort((a, b) => a.distance - b.distance)
      // 服务中心保存到vuex中
      this.saveCenters(tempArr)
      uni.setStorageSync('oneCenters', JSON.stringify(tempArr[0]))
    },
  },
}
